package com.goldze.mvvmhabit.okgo;

import com.google.gson.Gson;
import com.lzy.okgo.callback.StringCallback;

import java.io.File;

import static com.lzy.okgo.OkGo.get;
import static com.lzy.okgo.OkGo.post;

public class HTTPAPI {

    public static HTTPAPI instance;

    private static Gson gson = null;

    public static HTTPAPI getInstance() {
        if (instance == null) {
            instance = new HTTPAPI();
        }
        if (gson == null) {
            gson = new Gson();
        }
        return instance;
    }

    /**
     * 获取所有班级
     * @param callback
     */
    public void getClassList(StringCallback callback) {
        get(Constants.CLASS_LIST)
                .tag(this)
                .connTimeOut(30000)
                .execute(callback);
    }

    /**
     * 注册的方法
     *
     * @param name
     * @param callback
     */
    public void register(String username,String name,String mobile,String school,String age,String number,String sex,
                         String password, String clazzId,String clazzName,String idCard,StringCallback callback) {
        post(Constants.REGISTER)
                .tag(this)
                .connTimeOut(30000)
                .params("username",username)
                .params("name",name)
                .params("age",age)
                .params("mobile",mobile)
                .params("number",number)
                .params("password",password)
                .params("school",school)
                .params("sex",sex)
                .params("clazzId",clazzId)
                .params("clazzName",clazzName)
                .params("idCard",idCard)
                .execute(callback);
    }

    /**
     * 注册的方法
     *
     * @param name
     * @param callback
     */
    public void update(String token,String username,String name,String mobile,String school,String age,String number,String sex,
                         String password, String clazzId,String clazzName,String idCard,StringCallback callback) {
        post(Constants.PERSION_INFO_UPDATE)
                .tag(this)
                .connTimeOut(30000)
                .headers("mobileToken",token)
                .params("username",username)
                .params("name",name)
                .params("age",age)
                .params("mobile",mobile)
                .params("number",number)
                .params("password",password)
                .params("school",school)
                .params("sex",sex)
                .params("clazzId",clazzId)
                .params("clazzName",clazzName)
                .params("idCard",idCard)
                .execute(callback);
    }

    /**
     * 注册的方法
     *
     * @param name
     * @param callback
     */
    public void login(String name,
                      String password, StringCallback callback) {
        post(Constants.LOGIN)
                .tag(this)
                .connTimeOut(30000)
                .params("username",name)
                .params("password",password)
                .execute(callback);
    }


    /**
     * 打卡的方法
     * @param name
     * @param tel
     * @param trip14            随便填
     * @param symptoms          发烧咳嗽
     * @param clazzId
     * @param lat
     * @param lng
     * @param isTouch           是否有接触感染人员
     * @param contactName       紧急联系人
     * @param callback
     */
    public void playCard(String status,String temp,String token,String name, String tel, String trip14,String symptoms,
                         String clazzId,String lat,String lng,String isTouch,String contactName,
                         String personId,StringCallback callback) {
        post(Constants.PLAY_CARD)
                .tag(this)
                .connTimeOut(30000)
                .headers("mobileToken",token)
                .params("temp",temp)
                .params("contactName",contactName)
                .params("person.name",name)
                .params("person.mobile",tel)
                .params("trip14",trip14)//随便输入
                .params("isTouch",isTouch)
                .params("symptoms",symptoms)
                .params("status",status)
                .params("person.clazzId",clazzId)
                .params("lat",lat)
                .params("lng",lng)
                .params("personId",personId)
                .execute(callback);
    }

    /**
     * 打卡的方法
     *
     * @param name
     * @param callback
     */
    public void getMsgList(String name,String token,StringCallback callback) {
        get(Constants.NEW_LIST)
                .tag(this)
                .connTimeOut(30000)
                .headers("mobileToken",token)
                .params("personId",name)
                .execute(callback);
    }

    /**
     * 获取食物列表的方法
     *
     * @param callback
     */
    public void getFoodList(String token,StringCallback callback) {
        get(Constants.FOOD_LIST)
                .tag(this)
                .connTimeOut(30000)
                .headers("mobileToken",token)
                .execute(callback);
    }

    /**
     * 获取食物列表的方法
     *
     * @param callback
     */
    public void postFood(String token,String dataStr,String personId,StringCallback callback) {
        post(Constants.EAT_UP)
                .tag(this)
                .connTimeOut(30000)
                .headers("mobileToken",token)
                .params("dataStr",dataStr)
                .params("personId",personId)
                .execute(callback);
    }


    /**
     * 获取新闻列表的方法
     *
     * @param callback
     */
    public void getNewsList(String token,StringCallback callback) {
        get(Constants.FIND_NEWS_LIST)
                .tag(this)
                .connTimeOut(30000)
                .headers("mobileToken",token)
                .execute(callback);
    }


    /**
     * 获取新闻详情的方法
     *
     * @param callback
     */
    public void getNewsDetail(String token,String id,StringCallback callback) {
        get(Constants.FIND_NEWS_DETAIL + id)
                .tag(this)
                .connTimeOut(30000)
                .headers("mobileToken",token)
                .execute(callback);
    }


    /**
     * 获取新闻详情的方法
     *
     * @param callback
     */
    public void updateHeadImg(String token,File file, StringCallback callback) {
        post(Constants.HEAD_IMG_UPDATE)
                .tag(this)
                .connTimeOut(30000)
                .isMultipart(true)
                .headers("mobileToken",token)
                .params("file",file)
                .execute(callback);
    }



}
